package com.caldera.vaquita;

import java.awt.font.NumericShaper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class VaquitaCajaReport extends Activity {
	VaquitaUtils utils;
	VaquitaData data;
	SQLiteDatabase db;
	Cursor rs;
	String sql;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.cajareport);

		onReport();
	}

	public void onClickRB(View v) {
		onReport();
	}

	public void onReport() {
		RadioButton rb_all = (RadioButton) findViewById(R.id.RBOptionReportAll);
		RadioButton rb_group = (RadioButton) findViewById(R.id.RBOptionReportOrder);
		if (rb_all.isChecked() == true) {
			onReportAll();
		}
		if (rb_group.isChecked() == true) {
			onReportGroup();
		}
	}

	@SuppressWarnings({ "unchecked", "static-access" })
	public void onReportAll() {
		TableLayout reporte = (TableLayout) findViewById(R.id.tableLayoutCajaReport);
		reporte.removeAllViews();
		TableRow oper;
		int c = 0;
		double tt_d = 0;
		double tt_h = 0;
		double tt_s = 0;
		TextView fecha;
		TextView detalle;
		TextView ingreso;
		TextView salida;
		TextView saldo;
		ArrayList<Double> salidaHistorial = new ArrayList<Double>();

		data = new VaquitaData(this);
		db = data.getReadableDatabase();
		utils = new VaquitaUtils(this);
		sql = "select _id, grupo, strftime('%d %H:%M', fecha) as fecha, detalle, debe, haber, saldo from caja WHERE fecha >= datetime('"
				+ (utils.getFecha("yyyy-MM") + "-01 00:00:00")
				+ "') ORDER BY _id ASC;";
		rs = db.rawQuery(sql, null);
		while (rs.moveToNext()) {
			c++;
			tt_d += rs.getDouble(4);
			tt_h += rs.getDouble(5);
			tt_s = rs.getDouble(6);
			if (c == 1) {
				oper = new TableRow(this);
				fecha = new TextView(this);
				fecha.setText(" Fecha");
				fecha.setTextSize(12);
				fecha.setTextColor(Color.parseColor("#505050"));
				fecha.setBackgroundColor(Color.parseColor("#CEEBFF"));
				detalle = new TextView(this);
				detalle.setText(" Descripcion");
				detalle.setTextSize(12);
				detalle.setTextColor(Color.parseColor("#505050"));
				// detalle.setWidth(100);
				detalle.setBackgroundColor(Color.parseColor("#CEEBFF"));
				ingreso = new TextView(this);
				ingreso.setText(" Ingresos");
				ingreso.setTextSize(12);
				ingreso.setTextColor(Color.parseColor("#505050"));
				// ingreso.setWidth(55);
				ingreso.setBackgroundColor(Color.parseColor("#CEEBFF"));
				salida = new TextView(this);
				salida.setText(" Salidas");
				salida.setTextSize(12);
				salida.setTextColor(Color.parseColor("#505050"));
				// salida.setWidth(55);
				salida.setBackgroundColor(Color.parseColor("#CEEBFF"));
				saldo = new TextView(this);
				saldo.setText("SALDO");
				saldo.setTextSize(12);
				saldo.setTextColor(Color.parseColor("#505050"));
				// saldo.setWidth(80);
				saldo.setBackgroundColor(Color.parseColor("#CEEBFF"));

				oper.addView(fecha);
				oper.addView(detalle);
				oper.addView(ingreso);
				oper.addView(salida);
				oper.addView(saldo);
				reporte.addView(oper);
			}
			oper = new TableRow(this);
			fecha = new TextView(this);
			fecha.setText(rs.getString(2));
			fecha.setTextColor(Color.YELLOW);
			fecha.setTextSize(8);
			detalle = new TextView(this);
			detalle.setText(rs.getString(3));
			detalle.setTextSize(12);
			// detalle.setWidth(100);
			ingreso = new TextView(this);
			ingreso.setText(rs.getDouble(4) > 0 ? rs.getDouble(4) + "" : "");
			ingreso.setTextSize(12);
			// ingreso.setWidth(50);
			salida = new TextView(this);
			salida.setText(rs.getDouble(5) > 0 ? rs.getDouble(5) + "" : "");
			
			//TODO
			salidaHistorial.add(rs.getDouble(5));
			 
			salida.setTextSize(12);
			// salida.setWidth(50);
			saldo = new TextView(this);
			saldo.setText("" + rs.getDouble(6));
			saldo.setTextSize(12);
			saldo.setTextColor(Color.parseColor("#505050"));
			saldo.setBackgroundColor(Color.parseColor("#DCFD11"));
			// saldo.setWidth(70);

			oper.addView(fecha);
			oper.addView(detalle);
			oper.addView(ingreso);
			oper.addView(salida);
			oper.addView(saldo);
			reporte.addView(oper);
		}
		oper = new TableRow(this);
		fecha = new TextView(this);
		fecha.setText("");
		detalle = new TextView(this);
		detalle.setText(" TOTALES ");
		detalle.setTextSize(12);
		ingreso = new TextView(this);
		ingreso.setText("" + tt_d);
		ingreso.setTextSize(12);
		ingreso.setTextColor(Color.parseColor("#505050"));
		ingreso.setBackgroundColor(Color.parseColor("#3FFF7D"));
		salida = new TextView(this);
		salida.setText("" + tt_h);
		salida.setTextSize(12);
		salida.setTextColor(Color.parseColor("#505050"));
		// salida.setWidth(55);
		salida.setBackgroundColor(Color.parseColor("#FFBCCB"));
		saldo = new TextView(this);
		saldo.setText("" + tt_s);
		saldo.setTextSize(12);
		saldo.setTextColor(Color.parseColor("#505050"));
		saldo.setBackgroundColor(Color.parseColor("#83EAFF"));


//		for (String string :  salidaHistorial) {
//			historial = (string);
//		}
		
		oper.addView(fecha);
		oper.addView(detalle);
		oper.addView(ingreso);
		oper.addView(salida);
		oper.addView(saldo);
		reporte.addView(oper);
		
		historial = (List<? extends Number>) salidaHistorial;
		saldo1 = String.valueOf(tt_s);
		salida1 = String.valueOf(tt_h);
	}

	public void onReportGroup() {
		TableLayout reporte = (TableLayout) findViewById(R.id.tableLayoutCajaReport);
		reporte.removeAllViews();
		TableRow oper;
		int g = -1;
		double tt_d = 0;
		double tt_h = 0;
		TextView fecha;
		TextView detalle;
		TextView ingreso;
		TextView salida;

		data = new VaquitaData(this);
		db = data.getReadableDatabase();
		utils = new VaquitaUtils(this);
		sql = "select _id, grupo, strftime('%d %H:%M', fecha) as fecha, detalle, debe, haber, saldo from caja WHERE fecha >= datetime('"
				+ (utils.getFecha("yyyy-MM") + "-01 00:00:00")
				+ "') ORDER BY grupo, _id ASC;";
		rs = db.rawQuery(sql, null);
		while (rs.moveToNext()) {
			tt_d += rs.getDouble(4);
			tt_h += rs.getDouble(5);
			if (g != rs.getInt(1)) {
				g = rs.getInt(1);
				oper = new TableRow(this);
				fecha = new TextView(this);
				fecha.setText("");
				fecha.setTextSize(12);
				fecha.setTextColor(Color.parseColor("#505050"));
				fecha.setBackgroundColor(Color.parseColor("#FFE329"));
				detalle = new TextView(this);
				detalle.setText(utils.getGrupoNm(g));
				detalle.setTextSize(12);
				detalle.setTextColor(Color.parseColor("#505050"));
				// detalle.setWidth(100);
				detalle.setBackgroundColor(Color.parseColor("#FFE329"));
				ingreso = new TextView(this);
				ingreso.setText("");
				ingreso.setTextSize(12);
				ingreso.setTextColor(Color.parseColor("#505050"));
				// ingreso.setWidth(55);
				ingreso.setBackgroundColor(Color.parseColor("#FFE329"));
				salida = new TextView(this);
				salida.setText("");
				salida.setTextSize(12);
				salida.setTextColor(Color.parseColor("#505050"));
				// salida.setWidth(55);
				salida.setBackgroundColor(Color.parseColor("#FFE329"));

				oper.addView(fecha);
				oper.addView(detalle);
				oper.addView(ingreso);
				oper.addView(salida);
				reporte.addView(oper);
				// cabeceras
				oper = new TableRow(this);
				fecha = new TextView(this);
				fecha.setText(" Fecha");
				fecha.setTextSize(12);
				fecha.setTextColor(Color.parseColor("#505050"));
				fecha.setBackgroundColor(Color.parseColor("#CEEBFF"));
				detalle = new TextView(this);
				detalle.setText(" Descripcion");
				detalle.setTextSize(12);
				detalle.setTextColor(Color.parseColor("#505050"));
				// detalle.setWidth(100);
				detalle.setBackgroundColor(Color.parseColor("#CEEBFF"));
				ingreso = new TextView(this);
				ingreso.setText(" Ingresos");
				ingreso.setTextSize(12);
				ingreso.setTextColor(Color.parseColor("#505050"));
				// ingreso.setWidth(55);
				ingreso.setBackgroundColor(Color.parseColor("#CEEBFF"));
				salida = new TextView(this);
				salida.setText(" Salidas");
				salida.setTextSize(12);
				salida.setTextColor(Color.parseColor("#505050"));
				// salida.setWidth(55);
				salida.setBackgroundColor(Color.parseColor("#CEEBFF"));

				oper.addView(fecha);
				oper.addView(detalle);
				oper.addView(ingreso);
				oper.addView(salida);
				reporte.addView(oper);
			}
			oper = new TableRow(this);
			fecha = new TextView(this);
			fecha.setText(rs.getString(2));
			fecha.setTextColor(Color.YELLOW);
			fecha.setTextSize(8);
			detalle = new TextView(this);
			detalle.setText(rs.getString(3));
			detalle.setTextSize(12);
			// detalle.setWidth(100);
			ingreso = new TextView(this);
			ingreso.setText(rs.getDouble(4) > 0 ? rs.getDouble(4) + "" : "");
			ingreso.setTextSize(12);
			// ingreso.setWidth(50);
			salida = new TextView(this);
			salida.setText(rs.getDouble(5) > 0 ? rs.getDouble(5) + "" : "");
			salida.setTextSize(12);
			// salida.setWidth(50);

			oper.addView(fecha);
			oper.addView(detalle);
			oper.addView(ingreso);
			oper.addView(salida);
			reporte.addView(oper);
		}
		oper = new TableRow(this);
		fecha = new TextView(this);
		fecha.setText("");
		detalle = new TextView(this);
		detalle.setText(" TOTALES ");
		detalle.setTextSize(12);
		ingreso = new TextView(this);
		ingreso.setText("" + tt_d);
		ingreso.setTextSize(12);
		ingreso.setTextColor(Color.parseColor("#505050"));
		ingreso.setBackgroundColor(Color.parseColor("#3FFF7D"));
		salida = new TextView(this);
		salida.setText("" + tt_h);
		salida.setTextSize(12);
		salida.setTextColor(Color.parseColor("#505050"));
		// salida.setWidth(55);
		salida.setBackgroundColor(Color.parseColor("#FFBCCB"));

		oper.addView(fecha);
		oper.addView(detalle);
		oper.addView(ingreso);
		oper.addView(salida);
		reporte.addView(oper);
	}

	static String saldo1 = "";
	static String salida1 = "";
	static List<? extends Number> historial = null;

	public static String getSaldo() {
		return saldo1;
	}
	
	public static String getSalida() {
		return salida1;
	}
	
	public static List<? extends Number> getHistorial(){		
		return historial;		
	}
}
